package example.demo.factorybean;

import example.demo.entity.Student;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.stereotype.Component;

/**
 * BeanFactory 是 Bean 的⼯⼚， ApplicationContext 的⽗类，
 * IOC 容器的核⼼，负责⽣产和管理 Bean 对象。
 * FactoryBean 是 spring容器的一个Bean，可以通过实现 FactoryBean 接⼝的getObject，
 * 去自己new对象。而这个new的对象，默认也是单例的，
 * <?  是加入到factoryBeanObjectCache里面去的，并不是加入到singletonObjects里面去
 */
@Component
public class FactoryBeanStudent implements FactoryBean<Student> {

    @Override
    public Student getObject() throws Exception {
        Student student = new Student("wahaha", 18);
        return student;
    }

    @Override
    public Class<?> getObjectType() {
        return Student.class;
    }
}
